Objetivo principal:
Objetivos especÃficos:
Determinar el modelo estadÃstico que mejor permita explorar la relación entre el clima y el número de casos reportados de malaria en la ventana temporal del estudio.
Determinar si el efecto del clima en el número de casos reportados de malaria varia en el tiempo según el modelo.
Contamos con una tabla de datos con el número de casos reportados de malaria (falciparum y vivax) por mes en cada distrito de la región de Loreto desde de enero de 2000 a diciembre de 2017. Además, para cada uno de estos registros se tiene el valor mensual de variables climáticas consideradas para el estudio.
Las columnas de la tabla acompañadas de su descripción se muestra continuación:
| Columna | Descripción |
|---|---|
district |
Distrito. |
year |
Año. |
month |
Mes. |
falciparum |
Número de casos de falciparum. |
vivax |
Número de casos de vivax. |
aet |
Evapotranspiración real. |
prcp |
Precipitación |
q |
EscorrentÃa |
soil |
Humedad del suelo. |
tmax |
Temperatura máxima. |
tmin |
Temperatura mÃnima |
water_deficit |
Déficit hÃdrico. |
pop2015 |
Población del distrito en el año 2015. |
province |
Provincia a la que pertenece el distrito. |
region |
Region/Departamento al que pertenece el distrito (Loreto) |
id_district |
ID del distrito. |
Creación de la columnas
Creamos una columna llamada date con formato de fecha a partir de las columnas year y month. También añadimos una columna llamada control la cual indica las fechas que pertenecen al periodo de octubre de 2005 a setiembre de 2010 en el cual se realizaró el programa de control. Por último, agregamos una columna llamada malaria, la cual contiene el número total de casos registrados (falciparum + vivax) en cada fecha.
## Número de meses: 216
## Número de distritos: 49
Número de distritos por mes
## as.character(date) n
## Length:216 Min. :49
## Class :character 1st Qu.:49
## Mode :character Median :49
## Mean :49
## 3rd Qu.:49
## Max. :49
Número de meses por distritos
## district n
## Length:49 Min. :216
## Class :character 1st Qu.:216
## Mode :character Median :216
## Mean :216
## 3rd Qu.:216
## Max. :216
theme_set(theme_light())
dataset %>%
dplyr::group_by(date) %>%
dplyr::summarise(
reported_cases = sum(malaria)
) %>%
ggplot(
aes(
x = date,
y = reported_cases / 1000
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) durante los
años 2000 a 2017 en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::group_by(province, date) %>%
dplyr::summarise(
reported_cases = sum(malaria)
) %>%
ggplot(
aes(
x = date,
y = reported_cases
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '5 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
facet_wrap(
facets = . ~ province,
scales = 'free'
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) durante los
años 2000 a 2017 por provincias en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
ggplot(
aes(
x = date,
y = malaria / 1000
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '5 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
facet_wrap(
facets = .~district,
scales = 'free'
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) durante los
años 2000 a 2017 por distritos en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::group_by(date) %>%
dplyr::summarise(
falciparum = sum(falciparum),
vivax = sum(vivax)
) %>%
tidyr::pivot_longer(
cols = c(falciparum, vivax),
names_to = 'parasite'
) %>%
ggplot(aes(x = date, y = value)) +
geom_line(
aes(
colour = parasite
),
alpha = 0.25,
size = 1,
position = position_dodge(width = 0.8)
) +
scale_color_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_fill_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) por parásito
durante los años 2000 a 2017 en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::group_by(province, date) %>%
dplyr::summarise(
falciparum = sum(falciparum),
vivax = sum(vivax)
) %>%
tidyr::pivot_longer(
cols = c(falciparum, vivax),
names_to = 'parasite'
) %>%
ggplot(aes(x = date, y = value)) +
geom_line(
aes(
colour = parasite
),
alpha = 0.25,
size = 1,
position = position_dodge(width = 0.8)
) +
scale_color_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_fill_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '5 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
facet_wrap(
facets = . ~ province,
scales = 'free'
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) por parásito
durante los años 2000 a 2017 por provincias en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::group_by(district, date) %>%
dplyr::summarise(
falciparum = sum(falciparum),
vivax = sum(vivax)
) %>%
tidyr::pivot_longer(
cols = c(falciparum, vivax),
names_to = 'parasite'
) %>%
ggplot(aes(x = date, y = value)) +
geom_line(
aes(
colour = parasite
),
alpha = 0.25,
size = 1,
position = position_dodge(width = 0.8)
) +
scale_color_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_fill_manual(
values = c("#00AFBB", "#E7B800")
) +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '5 year'
) +
labs(
y = 'Número de casos reportados de malaria (x1000)',
x = NULL
) +
facet_wrap(
facets = . ~ district,
scales = 'free'
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria (x1000) por parásito
durante los años 2000 a 2017 por distritos en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
Loreto
library(forecast)
dataset %>%
dplyr::group_by(date) %>%
dplyr::summarise(
reported_cases = sum(malaria)
) %>%
dplyr::select(reported_cases) %>%
ts(
start = 2000,
frequency = 12
) %>%
forecast::ggseasonplot(
polar = TRUE
) +
ggtitle(
label = 'Polar seasonal plot: \n Número de casos reportados de malaria durante
los años 2000 a 2017 en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::group_by(date) %>%
dplyr::summarise(
reported_cases = sum(malaria)
) %>%
dplyr::select(reported_cases) %>%
ts(
start = 2000,
frequency = 12
) %>%
forecast::ggsubseriesplot(
polar = TRUE
) +
ggtitle(
label = 'Seasonal subseries plot: \n Número de casos reportados de malaria durante
los años 2000 a 2017 en Loreto'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE'
) %>%
ggplot(
aes(
x = date,
y = malaria
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
labs(
y = 'Número de casos reportados de malaria',
x = NULL
) +
geom_point(
data =
dplyr::filter(
dataset,
district == 'ALTO TAPICHE',
malaria == 0
),
aes(
x = date,
y = malaria
),
colour = 'red'
) +
ggtitle(
label = 'Número de casos mensuales reportados de malaria durante los años
2000 a 2017 en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE'
) %>%
ggplot(
aes(x = malaria)
) +
geom_histogram(
bins = 50,
color = 'black',
fill = 'white'
) +
ggtitle(
label = 'Histograma del número de casos mensuales reportados de malaria
durante los años 2000 a 2017 en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
### Análisis de autocorrelación
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
malaria
) %>%
ts(
start = 2000,
frequency = 12
) %>%
ggAcf(
lag.max = 15
) +
ggtitle(
label = 'Gráfico de autocorrelación del número de casos mensuales reportados
de malaria durante los años 2000 a 2017 en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
malaria
) %>%
stats::ts(
start = 2000,
frequency = 12
) %>%
forecast::ggPacf(
lag.max = 15
) +
ggtitle(
label = 'Gráfico de autocorrelación parcialdel número de casos mensuales
reportados de malaria durante los años 2000 a 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
malaria
) %>%
stats::ts(
start = 2000,
frequency = 12
) %>%
forecast::gglagplot(
lag.max = 15
) +
ggtitle(
label = 'Gráfico de dispersión de lags del número de casos mensuales
reportados de malaria durantes los años 2000 a 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
malaria
) %>%
stats::ts() %>%
stats::Box.test(
type = 'Ljung-Box'
)
##
## Box-Ljung test
##
## data: .
## X-squared = 88.823, df = 1, p-value < 2.2e-16
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE'
) %>%
dplyr::select(
aet,
prcp,
soilm,
tmax,
tmin,
malaria
) %>%
summary()
## aet prcp soilm tmax
## Min. : 55.97 Min. : 26.15 Min. : 52.6 Min. :30.05
## 1st Qu.: 73.98 1st Qu.:118.35 1st Qu.:121.2 1st Qu.:31.16
## Median : 81.63 Median :179.52 Median :122.0 Median :31.61
## Mean : 82.42 Mean :182.02 Mean :115.8 Mean :31.75
## 3rd Qu.: 90.96 3rd Qu.:234.09 3rd Qu.:122.0 3rd Qu.:32.35
## Max. :107.03 Max. :499.92 Max. :122.0 Max. :33.99
## tmin malaria
## Min. :18.57 Min. : 0.00
## 1st Qu.:20.40 1st Qu.: 2.00
## Median :21.00 Median : 11.00
## Mean :20.85 Mean : 21.81
## 3rd Qu.:21.40 3rd Qu.: 31.25
## Max. :22.48 Max. :207.00
dataset %>%
dplyr::filter(district == 'ALTO TAPICHE') %>%
dplyr::select(
date,
aet,
prcp,
soilm,
tmax,
tmin,
malaria
) %>%
tidyr::pivot_longer(
cols = c(
aet,
prcp,
soilm,
tmax,
tmin,
malaria
),
names_to = 'variable'
) %>%
ggplot(
aes(
x = date,
y = value
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
facet_grid(
facets = variable ~ .,
scales = 'free'
) +
ggtitle(
label = 'Número de casos reportados y valores de variables climáticas mensuales
durante los años 2005 a 2017 en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(
y = NULL,
x = NULL
)
library(GGally)
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
aet,
prcp,
soilm,
tmax,
tmin,
malaria
) %>%
GGally::ggpairs() +
ggtitle(
label = 'Matriz de correlación del número de casos reportados y valores de
variables climáticas mensuales durante los años 2005 a 2017
el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(district == 'ALTO TAPICHE') %>%
ggplot(
aes(
x = aet,
y = malaria
)
) +
geom_point() +
geom_smooth(
method = 'loess'
) +
labs(
x = 'Evapotranspiración real',
y = 'Número de casos reportados de malaria'
) +
ggtitle(
label = 'Gráfico de dispersión del número de casos reportados de malaria y
los valores de evapotranspiración mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
dataset %>%
dplyr::filter(district == 'ALTO TAPICHE') %>%
ggplot(
aes(
x = tmax,
y = malaria
)
) +
geom_point() +
geom_smooth(
method = 'loess'
) +
labs(
x = 'Temperatura máxima',
y = 'Número de casos reportados de malaria'
) +
ggtitle(
label = 'Gráfico de dispersión del número de casos reportados de malaria y
los valores de temperatura máxima mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
library(TTR)
library(tidyquant)
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
date,
malaria,
aet
) %>%
tidyquant::tq_mutate_xy(
x = aet,
y = malaria,
mutate_fun = runCor,
n = 12,
col_rename = 'roll_corr'
) %>%
ggplot(
aes(
x = date,
y = roll_corr
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
geom_hline(
aes(
yintercept = stats::cor(
x = aet,
y = malaria
)
),
colour = 'red'
) +
ggtitle(
label = 'Correlación rolling del número de casos reportados de malaria y
los valores de evapotranspiración mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche
(ventana = 12 meses)'
) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(
y = 'Correlación',
x = NULL
)
dataset %>%
dplyr::filter(
district == 'ALTO TAPICHE',
malaria > 0
) %>%
dplyr::select(
date,
malaria,
tmax
) %>%
tidyquant::tq_mutate_xy(
x = tmax,
y = malaria,
mutate_fun = runCor,
n = 12,
col_rename = 'roll_corr'
) %>%
ggplot(
aes(
x = date,
y = roll_corr
)
) +
geom_line() +
scale_x_datetime(
date_labels = '%Y',
date_breaks = '1 year'
) +
geom_hline(
aes(
yintercept = stats::cor(
x = tmax,
y = malaria
)
),
colour = 'red'
) +
ggtitle(
label = 'Correlación rolling del número de casos reportados de malaria y
los valores de la temperatura máxima mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche
(ventana = 12 meses)'
) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(
y = 'Correlación',
x = NULL
)
forecast::ggCcf(
x = ts(
dplyr::filter(
dataset,
malaria > 0,
district == 'ALTO TAPICHE'
)$aet
),
y = ts(
dplyr::filter(
dataset,
malaria > 0,
district == 'ALTO TAPICHE'
)$malaria
)
) +
ggtitle(
label = 'Gráfico de correlación cruzada del número de casos reportados de malaria y
los valores de evapotranspiración mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
forecast::ggCcf(
x = ts(
dplyr::filter(
dataset,
malaria > 0,
district == 'ALTO TAPICHE'
)$tmax
),
y = ts(
dplyr::filter(
dataset,
malaria > 0,
district == 'ALTO TAPICHE'
)$malaria
)
) +
ggtitle(
label = 'Gráfico de correlación cruzada del número de casos reportados de malaria y
los valores de la temperatura máxima mensuales durante los años 2000 y 2017
en el distrito de Alto Tapiche'
) +
theme(plot.title = element_text(hjust = 0.5))
#### Matriz de correlación del número de casos reportados de malaria y lags (n = 15) de los valores de evapotranspiración mensuales durante los años 2000 y 2017 en el distrito de Alto Tapiche
library(astsa)
dplyr::filter(
dataset,
district == 'ALTO TAPICHE',
malaria > 0
)$malaria %>%
ts() -> malaria
dplyr::filter(
dataset,
district == 'ALTO TAPICHE',
malaria > 0
)$aet %>%
ts() -> aet
dplyr::filter(
dataset,
district == 'ALTO TAPICHE',
malaria > 0
)$tmax %>%
ts() -> tmax
astsa::lag2.plot(
series1 = aet,
series2 = malaria,
max.lag = 15,
)
#### Matriz de correlación del número de casos reportados de malaria y lags (n = 15) de los valores de la temperatura máxima mensuales durante los años 2000 y 2017 en el distrito de Alto Tapiche
astsa::lag2.plot(
series1 = tmax,
series2 = malaria,
max.lag = 15
)